home *** CD-ROM | disk | FTP | other *** search
- /*
- * File: List.h
- *
- * Contains: xxx put contents here xxx
- *
- * Written by: Rick Violet
- *
- * Copyright: © 1992 by Apple Computer, Inc., all rights reserved.
- *
- * Change History (most recent first):
- *
- * 11/18/92 RV xxx put comment here xxx
- *
- * To Do:
- */
-
- #ifndef __LIST__
- #define __LIST__
-
- #ifndef __Object__
- #include "Object.h"
- #endif
-
- class ListNode;
- class List;
- class Loop;
-
- //*************************************************************************
- //—————————————————————————————————————————————————————————————————————————
- class ListNode : public Object
- {
- ListNode* fNextNode;
- ListNode* fPrevNode;
- Object* fNodeObject;
-
- public:
- ListNode( Object* pObject );
- virtual ~ListNode(void);
-
- void SetNext( ListNode* pNode ) { fNextNode = pNode; }
- void SetPrev( ListNode* pNode ) { fPrevNode = pNode; }
- ListNode* GetNext(void) { return fNextNode; }
- ListNode* GetPrev(void) { return fPrevNode; }
- virtual Object* GetNodeObject(void) { return fNodeObject; }
- };
-
- //*************************************************************************
- //—————————————————————————————————————————————————————————————————————————
- class List : public Object
- {
- protected:
- ListNode* fFirstNode;
- ListNode* fLastNode;
- short fCount;
-
- public: //——————————————————————————————————————————
- List(void);
- virtual ~List(void);
-
- short Count(void){ return fCount; }
- void AddAsFirst( Object* pObject );
- void AddAsLast( Object* pObject );
- void Insert( Object* pObject, short pIndex );
- void Remove( Object* pObject );
- void RemoveAll(void);
- void DisposeAll(void);
-
- Object* GetFirst(void);
- Object* GetIndexed( short pIndex );
- ListNode* GetFirstNode(void) { return fFirstNode; }
- short GetIndexOf( Object* pObject );
-
- private: //——————————————————————————————————————————
- ListNode* FindNode( Object* pObject );
- };
-
- //*************************************************************************
- //—————————————————————————————————————————————————————————————————————————
- class Loop : public Object
- {
- List* fList;
- ListNode* fCurrNode;
- public:
- Loop( List* pList );
- virtual ~Loop(void);
- void Reset( List* pList );
- Object* GetNext(void);
- };
-
- #endif
-